#ifndef __IClientCallback_H__
#define __IClientCallback_H__

#include <lampe/network/IClient.h>
#include <lampe/IReferenceCounted.h>

namespace lampe{
namespace network{



class IClientCallback:public IReferenceCounted{
public:

	/**
	 * Вызывается тогда, когда приходит время читать что-то из сети.
	 * Важно отметить то что читать нужно до тех пор, пока есть что читать.
	 * т.е. пока !client->getReader()->eof()
	 */
	virtual void readData()=0;

	/**
	 * Вызывается при соединении клиента
	 */
	virtual void onConnected()=0;

	/**
	 * Вызывается при отключении клиента
	 */
	virtual void onDisconnected()=0;
	/**
	 * Вызывается тогда, когда клиент подготовился к работе. Это вовсе не
	 * означает, что уже можно "общаться" с сервером.
	 *
	 * @param client клиентский объект. Через него можно получить доступ
	 * к потокам информации
	 */
	virtual void ready(IClient*client)=0;
};

}//namespace network
}//namespace lampe

#endif
